package pe.com.losportales.sigespub.service.impl;

import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import pe.com.losportales.sigespub.dao.PlanMarketingDao;
import pe.com.losportales.sigespub.dao.impl.PlanMarketingDaoImpl;
import pe.com.losportales.sigespub.modelo.Cliente;
import pe.com.losportales.sigespub.modelo.PlanMarketing;
import pe.com.losportales.sigespub.modelo.Proyecto;
import pe.com.losportales.sigespub.modelo.TipoMedioCampanha;
import pe.com.losportales.sigespub.service.PlanMarketingService;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class PlanMarketingServiceImpl implements PlanMarketingService {

	@Override
	public List<PlanMarketing> obtenerPlanesMarketing(int codigoCliente)
			throws Exception {
		PlanMarketingDao planMarketingDao = new PlanMarketingDaoImpl();
		return planMarketingDao.obtenerPlanesMarketing(codigoCliente);
	}

	@Override
	public boolean aprobarPlanMarketing(int codigo) throws Exception {
		PlanMarketingDao planMarketingDao = new PlanMarketingDaoImpl();
		
		return planMarketingDao.aprobarPlanMarketing(codigo);
		
	}

	@Override
	public int guardarPlanificacion(HttpServletRequest request) throws Exception  {
		Gson gson = new Gson();
		SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");
		java.util.Date parsed = (java.util.Date) format.parse(request.getParameter("fechaAprobacion"));
		java.util.Date parseInicio = (java.util.Date) format.parse(request.getParameter("fechaInicio"));
	  	int codigoPlan 	= 0;
		PlanMarketingDao planMarketingDao = new PlanMarketingDaoImpl();
		PlanMarketing planMarketing = new PlanMarketing();
		Cliente cliente = new Cliente();
		cliente.setCodigo(Integer.parseInt(request.getParameter("cliente")));
		planMarketing.setVersion(Integer.parseInt(request.getParameter("version")));
		planMarketing.setEstado(Boolean.parseBoolean(request.getParameter("estado")));
		planMarketing.setCliente(cliente);
		planMarketing.setCosto(0);
		planMarketing.setMoneda("Soles");
		planMarketing.setFechaAprobacion(new java.sql.Date(parsed.getTime()));
		planMarketing.setFechaInicio(new java.sql.Date(parseInicio.getTime()));
		codigoPlan = planMarketingDao.guardarPlanificacion(planMarketing);
		
	
		List<Proyecto> proyectos = gson.fromJson(request.getParameter("proyectos"), new TypeToken<List<Proyecto>>(){}.getType());
		for(Proyecto p: proyectos){
			p.setCodigo(codigoPlan);
			planMarketingDao.registrarProyectos(p);
		}
		List<TipoMedioCampanha> tipoMedioPlanificacion = gson.fromJson(request.getParameter("tiposMedio"), new TypeToken<List<TipoMedioCampanha>>(){}.getType());
		for(TipoMedioCampanha t : tipoMedioPlanificacion){
			t.setPlan(codigoPlan);
			planMarketingDao.registrarTiposMedios(t);
		}
		
	//	return planMarketingDao.guardarPlanificacion(planMarketing);
		return codigoPlan ;
	}

}
